/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package servlets;

import bdd.beans.DBLink;
import bdd.beans.Etudiant;
import bdd.beans.Examen;
import bdd.beans.ListeEtudiantEns;
import bdd.beans.ListeExamenEns;
import bdd.beans.ListeNoteEns;
import bdd.beans.Note;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author elbeigni
 */
public class ListeNotesECEnsServlet_1 extends HttpServlet {


    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");//définit le type de réponse, ici, on retourne une page HTML
	PrintWriter out = response.getWriter();//on récupère un objet permettant d'écrire dans la future page HTML
	out.println("<h1>Servlet doGet pour les notes ...</h1>");
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        PrintWriter out = response.getWriter(); 
        try
        {
            //Verif si on a bien passé les parametres EC et promotion
            if ((String) request.getParameter("EC")!=null || (String) request.getParameter("promotion")!=null)
            {
                //si on clique sur le bouton "modifier"
                if(request.getParameter("modifierNote")!=null)
                {
                    //verifie que la note est comptrise entre 0 et 20
                    if(Integer.parseInt(request.getParameter("noteEtudiant"))<0 || Integer.parseInt(request.getParameter("noteEtudiant"))>20)
                    {
                        request.setAttribute("test", "-1");
                    }
                    else //mise à jour de la BDD
                    {
                        request.setAttribute("test", "0");
                        try
                        {
                            DBLink db = new DBLink();
                            db.connexion();
                            String rq = "update note set note=" + request.getParameter("noteEtudiant") + " where numexamen=" + request.getParameter("numeroExamen") + " and numetudiant=" + request.getParameter("numeroEtudiant");
                            PreparedStatement pst = db.getConnection().prepareStatement(rq);
                            pst.executeUpdate();
                            db.getConnection().close();
                        }
                        catch (Exception e) {
                            Logger.getLogger(ListeNotesECEnsServlet.class.getName()).log(Level.SEVERE, null, e);
                        }
                    }
                }//si on clique sur ajouter et insertion de la note dans la BDD
                else if (request.getParameter("ajouterNote")!=null)
                {
                    if(Integer.parseInt(request.getParameter("noteEtudiant"))<0 || Integer.parseInt(request.getParameter("noteEtudiant"))>20)
                    {
                        request.setAttribute("test", "-1");
                    }
                    else
                    {
                        request.setAttribute("test", "0");
                        try
                        {
                            DBLink db = new DBLink();
                            db.connexion();
                            String rq = "insert into note values (" + request.getParameter("numeroEtudiant") + ", " + request.getParameter("numeroExamen") + " , " + request.getParameter("noteEtudiant") + ")";
                            PreparedStatement pst = db.getConnection().prepareStatement(rq);
                            pst.executeUpdate();
                            db.getConnection().close();
                        } catch (Exception e) {
                            Logger.getLogger(ListeNotesECEnsServlet.class.getName()).log(Level.SEVERE, null, e);
                        }
                    }
                }


                //recupere la liste des examens pour un EC, une promotion et un prof
                ListeExamenEns listeExamen = new ListeExamenEns();
                //listeExamen.recupererListeExamenEns(Integer.parseInt(request.getParameter("EC")),Integer.parseInt(request.getParameter("promotion")), 1);
                listeExamen.recupererListeExamenEns(1, 2, 1);
                request.setAttribute("listeExamen", listeExamen);

                //recupere la liste des etudiants de la promotion
                ListeEtudiantEns listeEtudiant = new ListeEtudiantEns();
                listeEtudiant.recupererListeEtudiantEns(1);

                //recuperer les notes pour tous les etudiants de la promo
                ListeNoteEns listeNote = new ListeNoteEns();
                for(Examen ex : listeExamen.getListeExamenEns())
                {
                    for(Etudiant e : listeEtudiant.getListeEtudiantEns())
                    {
                        listeNote = new ListeNoteEns();
                        Collection<Note> listNote = new ArrayList<Note>();
                        //listeNote.recupererListeNoteEns(e.getNumEtudiant(), Integer.parseInt(request.getParameter("promotion")), Integer.parseInt(request.getParameter("EC")), 1);
                        listeNote.recupererListeNoteEns(e.getNumEtudiant(), 1, 2, 2, ex.getNumExamen());
                        for(Note n : listeNote.getListeNoteEns())
                        {
                            listNote.add(n);
                        }
                        e.setListeNotes(listNote);
                    }
                }
                request.setAttribute("listeEtudiant", listeEtudiant);
    
                gotoPage("/affichage_notes.jsp", request, response);
            }
            else
            {
                gotoPage("/gestion_note.jsp", request, response);
            }
                response.setContentType("text/html;charset=UTF-8"); //définit le type de réponse, ici, on retourne une page HTML
                out.println("Servlet consultation des notes des élèves par les enseignants");

        }
        catch (Exception ex) {
            //out.println(ex.getCause().getMessage());
        }
    }

     private void gotoPage(String adress, HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(adress);
    dispatcher.forward(request,response);
  }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Servlet pour l'affichage des notes des éléves par EC";
    }// </editor-fold>

}
